Bi-LSTM + CRF

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2026.01.03
조회수
5
버전
v1

Bi-LSTM + CRF

개요

Bi-LSTM + CRF자연어 처리(Natural Language Processing, NLP) 분야에서 널리 사용되는 시퀀스 레이블링(sequence labeling)을 위한 딥러닝 모델 구조입니다. 이 모델은 양방향 장단기 기억 장치(Bidirectional Long Short-Term Memory, Bi-LSTM)와 조건부 확률 장(Conditional Random Field, CRF)을 결합하여, 텍스트의 문맥 정보를 효과적으로 포착하고 레이블 간의 전이 관계를 고려함으로써 높은 정확도를 달성합니다.

주로 개체명 인식(Named Entity Recognition, NER), 품사 태깅(Part-of-Speech Tagging), 의미 역할 인식(Semantic Role Labeling) 등의 과제에 사용되며, 특히 레이블 간 의존성이 중요한 상황에서 전통적인 단독 Bi-LSTM 모델보다 우수한 성능을 보입니다.


구성 요소

1. Bi-LSTM (Bidirectional LSTM)

LSTM(Long Short-Term Memory)은 순차적 데이터에서 장기 의존성(long-term dependencies)을 효과적으로 학습할 수 있도록 설계된 RNN(Recurrent Neural Network)의 한 변형입니다. 그러나 단일 LSTM은 이전 시점의 정보만을 고려하므로, 특정 단어의 의미를 파악할 때 뒤에 나오는 문맥을 반영하지 못합니다.

이를 해결하기 위해 도입된 것이 Bi-LSTM입니다. Bi-LSTM은 두 개의 LSTM 레이어를 사용합니다:

  • 정방향 LSTM(Forward LSTM): 시퀀스의 처음부터 끝까지 정보를 처리
  • 역방향 LSTM(Backward LSTM): 시퀀스의 끝부터 처음까지 정보를 처리

이 두 방향의 출력을 결합하면, 각 토큰(예: 단어)에 대해 앞뒤 문맥을 모두 반영한 히든 상태(hidden state)를 얻을 수 있습니다. 이 히든 상태는 각 단어의 풍부한 문맥 정보를 포함하게 됩니다.

2. CRF (Conditional Random Field)

CRF는 조건부 확률 모델로, 입력 시퀀스가 주어졌을 때 출력 레이블 시퀀스의 전체 확률을 모델링합니다. Bi-LSTM은 각 위치에서 독립적으로 레이블을 예측하지만, 레이블 간의 전이 가능성(예: "B-PER" 다음에 "I-PER"이 올 수 있으나 "B-LOC"는 올 수 없음)을 고려하지 못하는 단점이 있습니다.

CRF 레이어는 이러한 레이블 전이 점수(transition scores)를 학습하여, 전체 시퀀스 레이블의 일관성을 보장합니다. 예를 들어, CRF는 "B-ORG" 다음에 "I-ORG"가 올 가능성을 높이고, "B-ORG" 다음에 "B-PER"가 올 가능성은 낮추도록 학습합니다.


모델 아키텍처

Bi-LSTM + CRF 모델은 다음과 같은 순서로 구성됩니다:

  1. 임베딩 레이어: 각 단어를 밀집 벡터(dense vector)로 변환 (Word2Vec, GloVe, 또는 학습 가능한 임베딩 사용)
  2. Bi-LSTM 레이어: 임베딩된 시퀀스를 처리하여 각 토큰에 대한 문맥 기반 히든 상태 생성
  3. 출력 레이어: Bi-LSTM의 출력을 레이블 클래스 수만큼의 점수(logit)로 매핑
  4. CRF 레이어: 출력 점수를 바탕으로 레이블 전이 점수를 결합하여 전체 시퀀스의 조건부 확률 계산

수학적 표현

CRF는 입력 시퀀스 ( X = (x_1, x_2, ..., x_n) )와 출력 레이블 시퀀스 ( Y = (y_1, y_2, ..., y_n) )에 대해 다음과 같은 조건부 확률을 정의합니다:

[ P(Y|X) = \frac{1}{Z(X)} \exp\left( \sum_{i=1}^n \left( \theta(y_i, x_i) + A(y_{i-1}, y_i) \right) \right) ]

여기서: - ( \theta(y_i, x_i) ): Bi-LSTM 출력으로부터 얻은 단어 ( x_i )에 레이블 ( y_i )를 붙일 스코어 - ( A(y_{i-1}, y_i) ): 레이블 ( y_{i-1} )에서 ( y_i )로 전이할 때의 전이 점수 - ( Z(X) ): 정규화 항 (partition function)

학습 시, 이 조건부 확률의 로그 가능도를 최대화합니다.


장점

  • 문맥 정보의 포괄적 활용: Bi-LSTM이 앞뒤 문맥을 모두 고려
  • 레이블 일관성 보장: CRF가 레이블 전이 제약을 학습하여 비논리적인 레이블 시퀀스를 억제
  • 엔드 투 엔드 학습 가능: 전체 모델을 하나의 신경망으로 구성하여 기울기 기반 최적화 가능
  • 높은 정확도: 특히 NER와 같은 과제에서 SOTA(SOTA: State-of-the-Art) 모델 등장 전까지 강력한 성능을 보임

활용 사례

과제 설명
개체명 인식 (NER) 사람, 조직, 위치 등 고유명사를 식별하고 분류 (예: "서울" → B-LOC)
품사 태깅 (POS Tagging) 각 단어에 품사를 부여 (예: "달리다" → 동사)
의미 역할 인식 (SRL) 문장 내에서 동사와 그에 수식되는 논리적 역할(주어, 목적어 등)을 레이블링
의도 분석슬롯 추출 대화 시스템에서 사용자 발화의 의도와 관련 정보 추출

구현 예시 (PyTorch 기반)

import torch
import torch.nn as nn
from torchcrf import CRF

class BiLSTM_CRF(nn.Module):
    def __init__(self, vocab_size, tag_to_ix, embedding_dim, hidden_dim):
        super(BiLSTM_CRF, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embedding_dim)
        self.lstm = nn.LSTM(embedding_dim, hidden_dim // 2, bidirectional=True)
        self.hidden2tag = nn.Linear(hidden_dim, len(tag_to_ix))
        self.crf = CRF(len(tag_to_ix), batch_first=True)

    def forward(self, sentence):
        embeds = self.embedding(sentence)
        lstm_out, _ = self.lstm(embeds)
        emissions = self.hidden2tag(lstm_out)
        return emissions  # CRF 레이어에서 loss 계산 시 사용

    def loss(self, emissions, tags):
        return -self.crf(emissions, tags, reduction='mean')

    def decode(self, emissions):
        return self.crf.decode(emissions)

참고: [torchcrf](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Python/torchcrf) 라이브러리는 CRF 계층을 쉽게 구현할 수 있도록 도와줍니다.


관련 기술 및 발전 방향


참고 자료

  • Huang, Z., Xu, W., & Yu, K. (2015). Bidirectional LSTM-CRF Models for Sequence Tagging. arXiv:1508.01991
  • Lafferty, J., McCallum, A., & Pereira, F. (2001). Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data. ICML
  • PyTorch 공식 문서 및 pytorch-crf 라이브러리 문서

관련 문서

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?